1
Kebenaran Fisik List Python: Tata Letak Memori dan Pengalamatan ArrayList
AI028Lesson 8
00:00

Di bawah permukaan, list Python bukanlah daftar berantai yang longgar, melainkan struktur yang sangat terorganisasi ArrayList. Kebenarannya adalah: ia menempati ruang alamat yang kontinu dalam memori. Di sini tidak disimpan objek itu sendiri, melainkan referensi ke objek referensi๏ผˆๅœจ C ่ฏญ่จ€ๅฑ‚้ขๅณไธบๆŒ‡้’ˆ๏ผ‰ใ€‚่ฟ™็ง่ฎพ่ฎกๅฎž็Žฐไบ†ๅผ‚ๆž„ๆ•ฐๆฎ็š„็ปŸไธ€็ฎก็†๏ผŒๆ— ่ฎบๆ˜ฏไธ‰ๅŽŸ่‰ฒ๏ผˆRGB๏ผ‰ๅ…ƒ็ป„่ฟ˜ๆ˜ฏๅคๆ‚็š„ๅŠ ๅฏ†ๅฏ†้’ฅ (Key)๏ผŒ้ƒฝๅช้œ€ๅ ๆฎไธ€ไธชๅ›บๅฎšๅคงๅฐ็š„ๆŒ‡้’ˆไฝใ€‚

Ptr 0Ptr 1Ptr 3Pemindahan Elemen (Insert)

Matematika Pengalamatan dan Pertimbangan Kinerja

  • $O(1)$ Akses Acak: Dengan rumus $\text{Alamat Elemen} = \text{Alamat Awal} + \text{Indeks} \times \text{Ukuran}$, CPU dapat langsung menentukan posisi.
  • Analisis Rata-Rata (Amortized Analysis): Menggunakan strategi alokasi berlebihan, meskipun satu kali penambahan bisa $O(n)$, tetapi $\text{Total Biaya} = n + \sum_{j=0}^{\lg n} 2^j = 3n$, memastikan kinerja tambah rata-rata $O(1)$.
  • Batasan Penyisipan๏ผšๅฆ‚ Figure 8-2 ๆ‰€็คบ๏ผŒๅœจไปปๆ„ไฝ็ฝฎ `insert` ๅฟ…้กปๅนณ็งปๅŽ็ปญๆ‰€ๆœ‰ๆŒ‡้’ˆ๏ผŒๅคๆ‚ๅบฆไธบ $O(n)$ใ€‚
Perbandingan Algoritma
Berbeda dengan indeks ArrayList ($O(1)$), operasi pencarian pada Skip List memiliki kompleksitas waktu $O(\log n)$. Sementara itu, dasar algoritma RSAโ€”algoritma Euclideanโ€”berpusat pada $gcd(a,0)=a$. Semua algoritma ini berjalan di ruang memori yang sempit ini.